#include <stdio.h>
#include <stdlib.h>
#define N 100

int main() {
    int n, m,i,j;
    // 读入矩阵的行列数
    printf("请输入矩阵的行数和列数：\n");
    scanf("%d %d", &m, &n);

     // 动态分配指针数组，存放每行的首地址
    int **a=(int **)malloc(m * sizeof(int *)); //申请存储m个指针的内存块
    
   
   // 动态分配每一行的空间
    for (i = 0; i < m; i++) {
        a[i] = (int *)malloc(n * sizeof(int));
    }
           
   // 读入矩阵元素
    printf("请输入矩阵的元素：\n");
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            scanf("%d", &a[i][j]);
        }
    }

     // 输出矩阵
    printf("您输入的矩阵为：\n");
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }

        // 释放每一行的空间
       for(i=0;i<m;i++)
      free(a[i]);

    return 0;
}